﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ErepIrcBot
{
    public abstract class KomendaBitwa : Komenda
    {
        public KomendaBitwa(Plugin pl) : base(pl)
        {
        }

        protected abstract bool dodajBitwe(int numer, string[] podzielone, out string killeNapis, string channel);

        protected override void wykonajInternal(string tekst, string channel, string nick, int userLevel)
        {
            if (plugin.Zbiorka)
            {
                char[] sep = { ' ' };
                string[] podzielone = tekst.Split(sep);
                if ((podzielone.Length >= 2) && (podzielone[1].Length > 0))
                {
                    int numerBitwy;
                    if (int.TryParse(podzielone[1], out numerBitwy))
                    {
                        
                        string killeNapis;
                        bool wynik = dodajBitwe(numerBitwy, podzielone, out killeNapis, channel);
                        
                        if (wynik)
                        {
                            Bitwa bitwa = plugin.dajBitwe(numerBitwy);
                            plugin.AktualnaBitwa = bitwa;
                            if (killeNapis.Length > 0)
                            {
                                int ileKilli;
                                if (int.TryParse(killeNapis, out ileKilli))
                                {
                                    string napis = bitwa.dodajKille(ileKilli);
                                    plugin.slapuj(channel);
                                    wyswietlTekst(channel, napis);
                                }
                                else
                                {
                                    wyswietlTekst(channel, "Liczba killi nie jest liczba.", false);
                                }

                            }
                            else
                            {
                                wyswietlTekst(channel, "Dodano bitwe numer " + numerBitwy + ".");
                            }
                        }
                        

                    }
                    else
                    {
                        wyswietlTekst(channel, "Numer bitwy nie jest liczba.", false);
                    }
                }
                else
                {
                    wyswietlTekst(channel, "Nie podano numeru bitwy.", false);
                }
            }
            else
            {
                wyswietlTekst(channel, "Zbiorka nie jest aktywna", false);
            }
        }
    }
}
